mddfandomcom_pt_br-20200214-history
MDDWIKI:MDD2D:LUAAPI
O MDD 2D usa a linguagem LUA para os scripts. Essa é a lista de comandos de script atualmente implementados em adição aos padrões da linguagem LUA. Criação de Coisas create_npc create_npc(string name, int spriteID, int x, int y, function talkfunct, function updatefunct) Valor Retornado: Um gerenciador para o NPC criado. Cria um novo NPC com o nome name nas coordenadas x:y que irá aparecer com o sprite listado no arquivo npcs.xml sobre o respectivo spriteID. A cada game tick a função updatefunct é chamada para lidar com o NPC. Quando um personagem fala com o NPC através da função talkfunct é chamada a respectiva função para lidar com o NPC e com o Personagem. mana.monster_create mana.monster_create(int monsterID, int x, int y) Valor Retornado: Um Gerenciador para o monstro criado. Invoca um novo monstro do tipo monsterID no mapa atual através das coordenadas em pixels x:y. mana.trigger_create mana.trigger_create(int x, int y, int width, int height, string functionname, int arg, bool once) Cria uma nova área de trigger com a altura e largura dadas em pixels da posição do mapa x:y em pixels. Quando uma coisa andar sobre essa área, a função com o nome ''functionname é chamada com o gerenciador de coisas e com arg como argumento. Quando once for falso a função será chamada a cada game tick que a coisa estiver dentro desta área. Quando once for verdadeiro ela só é chamada novamente quando a coisa entrar e sair da área. mana.effect_create mana.effect_create(int id, int x, int y) mana.effect_create(int id, being b) Aciona o efeito id através do arquivo effects.xml do cliente (partículas e/ou sons) na localização do mapa x:y ou na coisa b. Isso não possui efeito na jogabilidade. Cuidado: Lembre-se que os cliente podem desligar os efeitos de partículas por questões de performance. Portanto você não deve utilizar isso para entradas visuais importantes. Entrada e Saída do_message do_message(handle npc, handle character, string message) Cuidado: Somente deve chamada a partir da função talk de um NPC. Mostra uma caixa de diálogo na tela do personagem ch mostrando a string msg. Para a thread atual até que o usuário clique em “OK”. do_choice do_choice(handle npc, handle character, item1, item2, ... itemN) Valor Retornado: Número da opção que o jogador escolheu (começando por 1). Cuidado: Deve ser chamado apenas a partir da função talk de um NPC. Mostra uma Caixa de Diálogo de NPC na tela do usuário com um número das opções para que seja escolhida uma. Para a thread atual até que o usuário selecione uma ou aborte a thread atual clicando em “cancelar”. Itens são strings ou tabelas de strings (indices serão ignorados, mas presumido que estejam em ordem). Então, do_choice(npc, ch, “A”, {“B”, “C”, “D”}, “E”) é o mesmo que do_choice(npc, ch, “A”, “B”, “C”, “D”, “E”). mana.being_say mana.being_say(handle being, string message) Faz uma coisa, que pode ser um personagem, monstro ou NPC, falar a mensagem message como se fosse dita por um jogador qualquer na barra de bate-papo. mana.chatmessage mana.chatmessage(handle character, string message) Mostra uma mensagem no chatlog do personagem e irá aparecer como uma mensagem privada vinda do “Servidor”. Interação com o Inventário mana.npc_trade mana.npc_trade(handle npc, handle character, bool mode, {int item1id, int item1cost, int item1amount}, ..., {int itemNid, int itemNcost, int itemNamount}) Abre uma janela de negociação enquanto estiver falando com um npc. O mode é true para vender e false para comprar. Você precisa setar cada item que o NPC irá comprar/vender, seu custo e a quantidade máxima {}. Nota: Se os quatro parâmetros (tipo tabela) são omitidos ou inválidos, e o modo setado for para vender (true), será possível vender todos os itens do inventário do jogador. Obs.: Certifique-se de colocar um parametro de valor (item cost) no seu items.xml para permitir que o jogador possa vender usando essa opção. Valores retornados: * 0 quando uma negociação é iniciada * 1 quando não há itens para ser vendidos/comprados * 2 no caso de erros Exemplos: npc_trade.lua -- "Um exemplo de Compra." local buycase = mana.npc_trade(npc, ch, false, { {533, 10, 20}, {535, 10, 30}, {537, 10, 50} }) if buycase 0 then do_message(npc, ch, "O que você deseja comprar ?") elseif buycase 1 then do_message(npc, ch, "Eu não tenho itens para vender.") else do_message(npc, ch, "Hmm, alguma coisa está errada... Pergunte a algum scripter para consertar o modo de venda!") end -- ... -- "Exemplo: Deixa o jogador vender apenas itens pré-determinados." local sellcase = mana.npc_trade(npc, ch, true, { {533, 10, 20}, {535, 10, 30}, {511, 10, 200}, {524, 10, 300}, {508, 10, 500}, {537, 10, 25} }) if sellcase 0 then do_message(npc, ch, "Aqui vamos nós :") elseif sellcase 1 then do_message(npc, ch, "Eu não estou interessado nos seus itens.") else do_message(npc, ch, "Hmm, alguma coisa saiu errada... Pergunte a algum scripter para me consertar!") end -- ... -- "Exemplo: Deixa o jogador vender quaisquer itens com um parâmetro 'value' no arquivo items.xml do servidor local sellcase = mana.npc_trade(npc, ch, true) if sellcase 0 then do_message(npc, ch, "Ok, o que você deseja vender :") elseif sellcase 1 then do_message(npc, ch, "Eu não estou interessado nos seus itens.") else do_message(npc, ch, "Hmm, alguma coisa está errada... Peça a algum scripter para me consertar !") end mana.chr_inv_count mana.chr_inv_count(handle character, int id1, ..., int idN) Valores Retornados: Um número de inteiros com a quantidade de itens (id) carregados pelo personagem. mana.chr_inv_change mana.chr_inv_change(handle character, int id1, int number1, ..., int idN, numberN) Valor Retornado: Booleano true se sucesso, booleano false se falha. Altera o número de itens com o ID de item id que o usuário possui. Você pode alterar quaisquer número de itens com essa função passando múltiplos ids e números pares. Uma falha pode ser causada por tentar tomar itens que o usuário não possui. Cuidado: Quando uma das operações falha, a operação seguinte será ignorada antes de ser executada. Por essa razão você deve sempre checar se o usuário possui os itens que você deseja tomar usando mana.chr_inv_count. mana.chr_money mana.chr_money(handle character) Valor Retornado: As Moedas atualmente carregadas pelo personagem. mana.chr_money_change mana.chr_money_change(handle character, int amount) Altera a quantidade de moedas carregadas pelo personagem. Cuidado: Antes de reduzir as moedas você deve se certificar que o personagem possui moedas suficientes usando a função mana.chr_money. Interação com os Personagens e Coisas get_quest_var(ch, name) mana.get_quest_var(handle character, string name) Valor Retornado: Variavel setada para a missão do personagem dado. mana.chr_set_quest(ch, name, value) mana.chr_set_quest(handle character, string name, string value) Seta a variável da missão de nome dado pelo personagem com o valor. mana.being_walk mana.being_walk(handle character, int pixelX, int pixelY, int walkSpeed) Set the desired destination in pixels for the 'character'. The 'WalkSpeed' é dada em tiles por segundo. A maior velocidade é de 6.0 tiles por segundo. mana.being_get_speed mana.being_get_speed(handle character, int id) Pega a velocidade atual do 'personagem'. FIXME: id parece estar não sendo usado ou nomeado errado. A velocidade é dada em tiles por segundo. A maior velocidade é de 6.0 tiles por segundo. mana.being_set_speed mana.being_get_speed(handle character, int speed) Seta a velocidade que é dada ao 'personagem'. A 'velocidade' (speed) é dada em tiles por segundo. A maior velocidade é de 6.0 tiles por segundos. mana.being_damage mana.being_damage(handle being, int damage, int delta, int accuracy, int type, int element) Inflige dano a uma 'Coisa'. A severidade do ataque está entre o dano e (dano + delta) é calculado usando as regras normais de cálculo de dano. A 'Coisa' possui uma chance de escapar do ataque usando a sua Agilidade. A accuracy decide o quão forte será. type afeta qual o tipo de armadura e atributos do personagem serão reduzidos pelo dano. Ele pode ser um dos seguintes valores : 0 DAMAGE_PHYSICAL 1 DAMAGE_MAGICAL 2 DAMAGE_OTHER element decide como o sistema de elementos irá alterar o dano. Os seguintes valores são possíveis : 0 ELEMENT_NEUTRAL 1 ELEMENT_FIRE 2 ELEMENT_WATER 3 ELEMENT_EARTH 4 ELEMENT_AIR 5 ELEMENT_LIGHTNING 6 ELEMENT_METAL 7 ELEMENT_WOOD 8 ELEMENT_ICE Valor Retornado : Redução do HP atual resultado do Ataque. mana.being_heal mana.being_heal(handle beingint value) Recupera os valores de HP perdidos de uma 'Coisa'. O valor pode ser omitido para que haja uma recuperação 'Completa' do alvo. Enquanto você pode também pode causar dano a uma 'Coisa' usando esse comando com valores negativos, é melhor que você use o mana.being_damage para esse propósito. mana.get_beings_in_circle mana.get_beings_in_circle(int x, int y, int radius) Valor Retornado : Essa função retorna uma tabela em lua com todas as 'Coisas' ao redor do raio no pixel central em (x, y). mana.being_get_name mana.being_get_name(handle being) Valor Retornado: Nome da Coisa. mana.being_type mana.being_type(handle being) Valor Retornado: Tipo da Coisa passada. Essas constantes de tipos são definidas em libmana-constants.lua: 0 TYPE_ITEM 1 TYPE_ACTOR 2 TYPE_NPC 3 TYPE_MONSTER 4 TYPE_CHARACTER 5 TYPE_EFFECT 6 TYPE_OTHER mana.being_get_action mana.being_get_action(handle being) Valor Retornado: Ação sendo executada atualmente pela Coisa. Essas constantes de ação são definidas em libmana-constants.lua: 0 ACTION_STAND 1 ACTION_WALK 2 ACTION_ATTACK 3 ACTION_SIT 4 ACTION_DEAD 5 ACTION_HURT mana.being_set_action mana.being_set_action(handle being, int action) mana.being_get_direction mana.being_get_direction(handle being) Valor Retornado: Direção atual da Coisa. Essas constantes de direção serão definidas em libmana-constants.lua: 0 DIRECTION_DEFAULT 1 DIRECTION_UP 2 DIRECTION_DOWN 3 DIRECTION_LEFT 4 DIRECTION_RIGHT 5 DIRECTION_INVALID mana.being_set_direction mana.being_set_direction(handle being, int direction) Seta a direção atual da Coisa passada. Direções são as mesmas do que em mana.being_get_direction. mana.chr_warp mana.chr_warp(handle character, int mapID, int posX, int posY) Teleporta o personagem para a posição posX:posY no mapa através do número do ID do mapID. O mapID pode ser substituído nil para teleportar o personagem para uma nova posição no mesmo mapa. mana.posx mana.posx(handle being) Valor Retornado: A posição horizontal da coisa em pixels mensurada a partir da borda esquerda do mapa em que está atualmente ativado. mana.posy mana.posy(handle being) Valor Retornado: A posição horizontal da coisa em pixels mensurada a partir da borda esquerda do mapa em que está atualmente ativado. mana.being_get_attribute mana.being_get_attribute(handle being, int attribute) Valor Retornado: Retorna a pontuação do atributo da coisa. Pode também ser utilizado para perguntar os níveis de habilidades dos personagens. mana.chr_get_exp mana.chr_get_exp(handle character, int attribute) Valor Retornado: O total de experiência coletada pelo personagem em atributos de habilidade. mana.chr_give_exp mana.chr_give_exp(handle character, int attribute, int amount int optimalLevel) Dá ao personagem uma quantidade de experiência no atributo da habilidade. Quando um nível ótimo é setado (depois de 0), a experiência é reduzida quando o nível da habilidade dos personagens é maior que isso. mana.exp_for_level mana.exp_for_level(int level) Valor Retornado: Retorna o total de experiência necessário (contado a partir do nível 0) para alcançar um nível em qualquer habilidade. mana.char_get_hair_color mana.chr_get_hair_color(handle character) Valor Retornado: O ID da cor de cabelo do personagem mana.char_set_hair_color mana.chr_set_hair_color(handle character, int color) Seta o ID de Cor de Cabelo do Personagem mana.char_get_hair_style mana.chr_get_hair_style(handle character) Valor Retornado: O ID do estilo de cabelo do Personagem mana.char_set_hair_style mana.chr_set_hair_style(handle character, int style) Seta o ID do estilo de Cabelo do Personagem mana.chr_get_rights mana.chr_get_rights(handle character) Valor Retornado: Nível de Acesso da Conta do Personagem. Efeitos de Status mana.being_apply_status mana.being_apply_status(handle Being, int status_id, int time) Dá um efeito de status a uma coisa usando o status_id, efeitos de status não funcionam em NPCs. o tempo é em game ticks. mana.being_remove_status mana.being_remove_status(handle Being, int status_id) Remove um efeito de status dado a uma coisa. mana.being_has_status mana.being_has_status(handle Being, int status_id) Valor Retornado: Booleano se a coisa possuir um efeito de status. mana.being_get_status_time mana.being_get_status_time(handle Being, int status_id) Valor Retornado: Número de ticks restantes do efeito de status. mana.being_set_status_time mana.being_set_status_time(handle Being, int status_id, int time) Seta o tempo que um efeito de status terá efeito em uma coisa. Agendamento atinit atinit(function() body end) Adiciona uma função que será executada quando o servidor de jogo (gameserver) carrega o mapa a que o script pertence. Geralmente usado para colocar NPCS ou triggers nos mapas. Quaisquer números de funções podem ser adicionadas desse jeito. schedule_in schedule_in(seconds, function() body end) Executa a função a cada seconds segundos. schedule_every schedule_every(seconds, function() body end) Executa a função a cada seconds segundos a partir da inicialização. on_death on_death(handle being, function() body end) Executa uma função quando a 'coisa' for morta. Note que isso não irá acontecer mais depois que a 'coisa' deixar o mapa. on_remove on_remove(handle being, function() body end) Executa uma função quando a ''coisa não estiver mais no mapa por alguma razão (deixa o mapa voluntáriamente, se teleporta, desloga, ou é limpa depois de ser morta ou qualquer outra coisa). Informações Gerais mana.get_map_id mana.get_map_id() Valor Retornado: O número ID do mapa em que o script está rodando. OBS.: